<?php
namespace App\Validator;

// 基础验证器
abstract class BaseValidate
{
    // 验证规则
    abstract function rules(): array;

    // 验证信息
    abstract function messages(): array;

    // 验证场景
    abstract function scene(): array;

    // 是否存在场景
    public function hasScene( $name )
    {
        return $this->scene()[ $name ]? true: false;
    }

    // 获取场景下验证规则
    public function getSceneRule( $name )
    {
        // 如果场景存在
        if( $this->hasScene( $name ) )
        {
            // 获取场景
            $scene = $this->scene()[ $name ];

            // 获取验证规则
            $rules = $this->rules();

            // 规律规则并返回
            return array_filter( $rules, function ( $key ) use ( $scene ) {
                return in_array( $key, $scene )? true: false;
            }, ARRAY_FILTER_USE_KEY );
        }

        return [];
    }
}